package v1

import (
	"document_manager/service"
	"fmt"
	"github.com/gin-gonic/gin"
	"os"
	"path"
	"strconv"
	"time"
)

// GetFileByKey 根据键值获取文件
func GetFileByKey(c *gin.Context) {
	dir := "/data/" + c.Param("key")
	//检查文件夹是否存在
	_, err := os.Stat(dir)
	if os.IsNotExist(err) {
		c.JSON(500, gin.H{
			"code": -1,
			"msg":  "无此文件：" + err.Error(),
		})
		return
	}

	file, err := service.GetLatestFile(dir)
	if err != nil {
		c.JSON(500, gin.H{
			"code": -1,
			"msg":  err.Error(),
		})
		return
	}
	fmt.Printf("%+v\n", dir+"/"+file.Name())
	c.File(dir + "/" + file.Name())
}

// UploadFileByKey 根据键值上传文件
func UploadFileByKey(c *gin.Context) {
	file, _ := c.FormFile("file")
	fileExt := path.Ext(file.Filename)
	uploadDir := "/data/" + c.Param("key") + "/"
	filePath := uploadDir + strconv.FormatInt(time.Now().Unix(), 10) + fileExt

	//检查文件夹是否存在
	_, err := os.Stat(uploadDir)
	if os.IsNotExist(err) {
		err := os.Mkdir(uploadDir, os.ModePerm)
		if err != nil {
			c.JSON(500, gin.H{
				"code": -1,
				"msg":  err.Error(),
			})
			return
		}
	}
	// 上传文件至指定目录
	err = c.SaveUploadedFile(file, filePath)
	if err != nil {
		c.JSON(500, gin.H{
			"code": -1,
			"msg":  err.Error(),
		})
		return
	}
	c.JSON(200, gin.H{
		"code": 0,
		"msg":  "上传成功",
	})
}
